1000 REM SAVE"0:DIRECTORY 64.PAL",8 1010 REM * BY ERIC GERMAIN STE-FOY, QUEBEC 1020 OPEN 8,8,1,"0:DIRECTORY 64.OBJ" 1030 SYS700 1040 .OPT O8 1050 *=$C000 1060 ; 1070 STATUS = $90 ; FILE STATUS VARIABLE 1080 RETURN = $AAD3 ; SEND CHR$(13) 1090 FIXFLT = $B391 ; FIXED-FLOAT CONVERSION 1100 SHWFLT = $BDD7 ; PRINT FLOATING POINT VALUE 1110 ACPTR = $FFA5 ; INPUT BYTE FROM SERIAL PORT 1120 CIOUT = $FFA8 ; OUTPUT BYTE TO SERIAL PORT 1130 LISTEN = $FFB1 ; SET LISTEN 1140 SECOND = $FF93 ; SEND SA AFTER LISTEN 1150 TALK = $FFB4 ; SET TALK 1160 TKSA = $FF96 ; SEND SA AFTER TALK 1170 UNLSN = $FFAE ; COMMAND BUS TO UNLISTEN 1180 UNTLK = $FFAB ; COMMAND BUS TO UNTALK 1190 CHROUT = $FFD2 ; OUTPUT CHARACTER 1200 STOP = $FFE1 ; TEST (STOP) KEY 1210 ; 1220 ; ** DIRECTORY READ DEMO ** 1230 ; 1240 LDA #8 ; DEVICE NUMBER 1250 JSR LISTEN ; AND SECONDARY ADDRESS 1260 LDA #$F0 ; 'OR'ED WITH $F0 1270 JSR SECOND ; TO INDICATE A FILE TO BE OPENED 1280 LDA #"$" ; "$0" 1290 JSR CIOUT ; SENT AS FILENAME 1300 LDA #"0" ; ONE CHARACTER AT A TIME 1310 JSR CIOUT 1320 JSR UNLSN ; STOP LISTENING 1330 LDA #8 ; DEVICE NUMBER 1340 JSR TALK ; AND SECONDARY ADDRESS 1350 LDA #$60 ; 'OR'ED WITH $60 1360 JSR TKSA ; TO INDICATE NORMAL I/O OPERATION 1370 LDA #0 ; SET STATUS WORD 1380 STA STATUS ; TO ZERO 1390 JSR ACPTR ; GET TWO DUMMIES 1400 JSR ACPTR 1410 JSR RETURN ; PRINT CARRIAGE RETURN 1420 ; 1430 MAIN = * 1440 JSR ACPTR ; GET TWO DUMMIES 1450 JSR ACPTR 1460 JSR ACPTR ; LINE NUMBER (LOW/HIGH) 1470 TAY 1480 JSR ACPTR 1490 LDX STATUS ; CHECK STATUS 1500 BNE FINI ; EXIT ON ERROR 1510 ; 1520 JSR FIXFLT ; PUT LINE NUMBER IN FPACC#1 1530 LDY #1 ; PRINT LINE NUMBER 1540 JSR SHWFLT ; (WHICH IS THE BLOCK COUNT) 1550 LDA #32 ; PRINT A SPACE 1560 JSR CHROUT 1570 ; 1580 LOOP = * 1590 JSR ACPTR ; GET CHARACTER 1600 PHP 1610 JSR CHROUT ; PRINT IT 1620 PLP 1630 BNE LOOP ; IF NON-ZERO THEN CONTINUE 1640 ; 1650 JSR RETURN ; PRINT CARRIAGE RETURN 1660 JSR STOP ; CHECK STOP KEY 1670 BNE MAIN 1680 ; 1690 FINI = * 1700 JSR UNTLK ; UN-TALK 1710 LDA #8 1720 JSR LISTEN 1730 LDA #$E0 ; THE SECONDARY ADDRESS 1740 JSR SECOND ; IS 'OR'ED WITH $E0 1750 JSR UNLSN ; TO INDICATE A FILE TO BE CLOSED 1760 RTS ; RETURN TO BASIC